const webpack = require('webpack')
const CompressionWebpackPlugin = require('compression-webpack-plugin')
const productionGzipExtensions = ['js', 'css']
let BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;

module.exports = {
    // webpack.base.conf.js配置
    configureWebpack: {
        plugins: [
            new webpack.ProvidePlugin({
                // $: 'jquery',
                // 'window.$': '$',
                // jQuery: 'jquery',
                // 'window.jquery': 'jQuery'
            }),
            // gzip插件
            new CompressionWebpackPlugin({
                algorithm: 'gzip',
                test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
                threshold: 10240,
                minRatio: 0.8
            }),
            // // webpack依赖分析插件
            // new BundleAnalyzerPlugin({
            //     // 可以是`server`，`static`或`disabled`。
            //     // 在`server`模式下，分析器将启动HTTP服务器来显示软件包报告。
            //     // 在“静态”模式下，会生成带有报告的单个HTML文件。
            //     // 在`disabled`模式下，你可以使用这个插件来将`generateStatsFile`设置为`true`来生成Webpack Stats JSON文件。
            //     analyzerMode: 'server',
            //     // 将在“服务器”模式下使用的主机启动HTTP服务器。
            //     analyzerHost: '127.0.0.1',
            //     // 将在“服务器”模式下使用的端口启动HTTP服务器。
            //     analyzerPort: 8888,
            //     // 路径捆绑，将在`static`模式下生成的报告文件。
            //     // 相对于捆绑输出目录。
            //     reportFilename: 'report.html',
            //     // 模块大小默认显示在报告中。
            //     // 应该是`stat`，`parsed`或者`gzip`中的一个。
            //     // 有关更多信息，请参见“定义”一节。
            //     defaultSizes: 'parsed',
            //     // 在默认浏览器中自动打开报告
            //     openAnalyzer: true,
            //     // 如果为true，则Webpack Stats JSON文件将在bundle输出目录中生成
            //     generateStatsFile: false,
            //     // 如果`generateStatsFile`为`true`，将会生成Webpack Stats JSON文件的名字。
            //     // 相对于捆绑输出目录。
            //     statsFilename: 'stats.json',
            //     // stats.toJson（）方法的选项。
            //     // 例如，您可以使用`source：false`选项排除统计文件中模块的来源。
            //     // 在这里查看更多选项：https： //github.com/webpack/webpack/blob/webpack-1/lib/Stats.js#L21
            //     statsOptions: null,
            //     logLevel: 'info'
            // }),
        ],
        // 打包排除： 资源名称：main.js中引用的名称
        externals: {
            vue: 'Vue',
            'vue-router': 'VueRouter',
            vuex: 'Vuex',
            axios: 'axios',
            // vuetify: 'Vuetify',
            vditor: 'Vditor',
            jquery: 'jQuery',
            // 'vue-froala-wysiwyg': 'vueFroala',
            'froala-editor': 'FroalaEditor',
            'js-md5': 'md5',
            'js-base64': 'Base64'
        }
    },
    devServer: {
        open: true,
        host: 'localhost',
        port: 8080,
        https: false,
        //以上的ip和端口是我们本机的;下面为需要跨域的
        proxy: { //配置跨域
            '/learning': {
                // target: 'http://localhost:8081',
                target: 'http://fujisann.ink',
                ws: true,
                changOrigin: true //允许跨域
                //   pathRewrite: {
                //       '^/learning': ''//请求的时候使用这个api就可以
                //   }
            }

        }
    },
    // 修复edge不兼容vuetify.js
    transpileDependencies: ['vuetify'],
    // 允许运行时编译
    runtimeCompiler: true
}